package controllerInterfaces;


/**
 * Provides all interfaces for create the Controller Layer by according Abstract Factory pattern design
 * 
 */
public abstract class AbstractControllerFactory {

	public abstract IControllerProjectManagement getControllerProjectManagement();
	public abstract IControllerRunSetup getControllerRun();
	public abstract IControllerDBConnectionSetup getControllerDBConnectionSetup();
	public abstract IControllerMetricsPanel getControllerMetricsPanel();	
	public abstract IControllerRecommendersPanel getControllerRecommendersPanel();
	public abstract IControllerTestsPanel getControllerTestPanel();
	public abstract IControllerTestSetup getControllerTestSetup();
	public abstract IControllerBenchmarkPanel getControllerBenchmarkPanel();
    public abstract IControllerMain getControllerMain();
    public abstract IControllerMain getControllerMain(String[] args);
    public abstract IControllerSaveTestResult getControllerSaveTestResult();
    public abstract IControllerLoadTestResult getControllerLoadTestResult();
    public abstract IControllerOutputJarSetup getControllerOutputJar();
    public abstract IControllerOutputJarSetup getControllerOutputJar(boolean createWithView);
	public abstract IControllerTestResultGraphic getControllerGraphic();
	public abstract IControllerCLI getControllerCLI();

    public static AbstractControllerFactory getAbstractControllerFactory()
    {
        return new ControllerFactory();
    }

}

